iT邦幫忙

2022 iThome 鐵人賽

DAY 29
0
AI & Data

文理組人都能上手的入門 NLP(自然語言處理)系列 第 30

[Day 29] 深度學習模型:會忘記東西的才叫人吧-長短期記憶(LSTM)

  • 分享至 

  • xImage
  •  

  大家午安~昨天講解RNN的時候提到RNN的缺點就是容易產生梯度消失或梯度爆炸的問題,所以今天要介紹為了解決這兩個問題而產生的RNN變體-長短期記憶(Long Short Term Memory)。

  因為RNN會一直把前面輸入的東西透過hidden state給出的數值留給下一個state,權重值就很容易越乘越小或越乘越大而造成問題,所以我們在LSTM裡要做的事情就是讓模型適當地忘記一些東西。這其實也比較像是人會做的事情啦,時間久了東西就會被忘掉。就是因為這樣,模型的名字才會叫做長短期記憶。新的input屬於短期記憶,印象鮮明,但是前一個state傳下來的東西屬於長期記憶,所以細節應該被忘掉一點。基本上整個LSTM模型可以用這句話概括,也就是我們讓他運作得更像人類的大腦一樣,對於輸入的東西具有選擇性。

  對於如何選擇這些資料,我們可以先想像原本的神經元裡面有一個一個的小工作區,這些工作區分別在進對不同輸入的選擇工作,就像下圖一樣:
https://ithelp.ithome.com.tw/upload/images/20221014/20151687eBd7cFv38d.png

  在LSTM模型裡面,我們可以把工作區分成三個:輸入區、忘記區跟輸出區。
https://ithelp.ithome.com.tw/upload/images/20221014/20151687u4Q38ItA7S.png

  從上面的圖我們可以看到,前一個hidden state傳下來的東西跟input的資料會一起分別進到這三個區域,讓他們可以生出忘記用的權重、input用的權重跟輸出用的權重。接著我們按照正常步驟,以hyperbolic tangent為轉換函數算出一般輸出值。
https://ithelp.ithome.com.tw/upload/images/20221014/20151687Pa25qcsy6F.png

  有了上面這些數值之後就可以正式開始工作了。我們先把上面算出來的一般輸出值乘上前面得到的input權重再加上前一個state給我們的數值乘上忘記權重就可以得到我們要交給下一個hidden state的值了。
https://ithelp.ithome.com.tw/upload/images/20221014/20151687FltKHuTvuU.png

  最後我們把這個值乘上output權重跟激發函數就會得到hidden state真的要輸出的值。以上就是LSTM在做的事情。可能會需要一點時間消化,反正我也是看了很多次才懂的XDD

  LSTM的缺點在於,因為他的步驟繁雜所以會需要比較多計算時間。除此之外,加上忘記的機制雖然對於簡單句子來說是有用的,對於結構比較複雜的句子來說(例:有用到關係代名詞的句子),就沒有辦法抓到距離比較遠卻關係強烈的文字。所以為了解決這樣的問題就有了BiLSTM的出現。有興趣的話,大家可以再去研究看看。

  那麼今天對LSTM的介紹就到這邊結束了,明天見!


參考資料

數學軟體應用07:有記憶的神經網路RNN


上一篇
[Day 28] 深度學習模型:該長點記性了吧-循環神經網路(RNN)
下一篇
[Day 30] NLP專案實作分享 & 完賽心得
系列文
文理組人都能上手的入門 NLP(自然語言處理)31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言